In this report, we reproduce the analyses using data from behavioral study 2 reported in Supplementary Material.
First, we load the relevant packages, define functions and plotting aesthetics, and load and tidy the data.
if(!require('pacman')) {
install.packages('pacman')
}
pacman::p_load(tidyverse, purrr, fs, knitr, lmerTest, ggeffects, kableExtra, boot, devtools, EMAtools, install = TRUE)
devtools::install_github("hadley/emo")# MLM results table function
table_model = function(model_data, reversed = FALSE) {
results = model_data %>%
broom.mixed::tidy(conf.int = TRUE) %>%
filter(effect == "fixed") %>%
rename("SE" = std.error,
"t" = statistic,
"p" = p.value) %>%
select(-group, -effect) %>%
mutate_at(vars(-contains("term"), -contains("p")), round, 2) %>%
mutate(term = gsub("cond", "", term),
term = gsub("\\(Intercept\\)", "intercept", term),
term = gsub("article_other", "other", term),
term = gsub("article_self", "self", term),
term = gsub("topichealth", "topic (health)", term),
term = gsub("msg_rel_self_z", "self-relevance", term),
term = gsub("msg_rel_social_z", "social relevance", term),
term = gsub("sharing_type", "sharing type (broadcast)", term),
term = gsub(":", " x ", term),
p = ifelse(p < .001, "< .001",
ifelse(p > .999, "1.000", gsub("0.(.*)", ".\\1", sprintf("%.3f", p)))),
`b [95% CI]` = sprintf("%.2f [%0.2f, %.2f]", estimate, conf.low, conf.high)) %>%
select(term, `b [95% CI]`, df, t, p)
if (reversed == TRUE) {
results = results %>%
mutate(term = gsub("broadcast", "narrowcast", term))
}
results %>%
select(term, `b [95% CI]`, df, t, p)
}
# simple effects function
simple_effects = function(model, sharing = FALSE) {
if(sharing == FALSE) {
results = emmeans::contrast(emmeans::emmeans(model, ~ article_cond | group),
"revpairwise", by = "group", adjust = "none") %>%
data.frame() %>%
filter(grepl("control", contrast)) %>%
select(contrast, group, estimate, p.value)
} else {
results = emmeans::contrast(emmeans::emmeans(model, ~ article_cond | group + sharing_type),
"revpairwise", by = "group", adjust = "none") %>%
data.frame() %>%
filter(grepl("- control", contrast)) %>%
filter(!grepl("^control", contrast)) %>%
extract(contrast, c("exp_sharing", "control_sharing"), ".* (0|1) - control (0|1)", remove = FALSE) %>%
filter(exp_sharing == control_sharing) %>%
mutate(sharing_type = ifelse(exp_sharing == 0, "broadcast", "narrowcast"),
contrast = gsub("0|1", "", contrast)) %>%
select(contrast, sharing_type, group, estimate, p.value)
}
results %>%
mutate(p.value = ifelse(p.value < .001, "< .001",
ifelse(p.value == 1, "1.000", gsub("0.(.*)", ".\\1", sprintf("%.3f", p.value))))) %>%
kable(digits = 2) %>%
kableExtra::kable_styling()
}palette_condition = c("#ee9b00", "#bb3e03", "#005f73")
palette_topic = c("climate" = "#E6805E",
"health" = "#3A3357")
palette_sharing = c("narrowcast sharing" = "#39A2AE",
"broadcast sharing" = "#335284")
plot_aes = theme_minimal() +
theme(legend.position = "top",
legend.text = element_text(size = 12),
text = element_text(size = 16, family = "Futura Medium"),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text = element_text(color = "black"),
axis.line = element_line(colour = "black"),
axis.ticks.y = element_blank())data = read.csv("../data/study2_data.csv", stringsAsFactors = FALSE) %>%
mutate(article_cond = ifelse(article_cond == "social", "other", article_cond),
msg_rel_self_z = scale(msg_rel_self, center = TRUE, scale = TRUE),
msg_rel_social_z = scale(msg_rel_social, center = TRUE, scale = TRUE)) %>%
filter(group == "comment") %>%
select(-group)These analyses explore whether the analyses reported in behavioral study 2 of the main manuscript are moderated by sharing type (narrowcast or broadcast). We focus on the comment group only because this is the only group for which the intervention was effective.
Are the relationships between self and social relevance and sharing intentions moderated by sharing type?
The relationship between self-relevance and sharing intentions was not moderated by topic.
However, the relationship between social relevance and sharing intentions was slightly stronger for health articles compared to climate articles.
data_broadcasting = data %>%
mutate(sharing_type = ifelse(sharing_type_key == "msg_sharing_broad", 0, 1))
mod_h3 = lmer(msg_share ~ msg_rel_self_z * sharing_type + msg_rel_social_z * sharing_type +
(1 + msg_rel_self_z + msg_rel_social_z | SID),
data = data_broadcasting,
control = lmerControl(optimizer = "bobyqa"))predicted_h3 = ggeffects::ggpredict(mod_h3, c("msg_rel_self_z", "sharing_type")) %>%
data.frame() %>%
mutate(variable = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h3, c("msg_rel_social_z", "sharing_type")) %>%
data.frame() %>%
mutate(variable = "social relevance")) %>%
mutate(group = ifelse(group == "0", "broadcast sharing", "narrowcast sharing"))
predicted_sub_h3 = ggeffects::ggpredict(mod_h3, c("msg_rel_self_z", "sharing_type", "SID"), type = "random") %>%
data.frame() %>%
mutate(variable = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h3, c("msg_rel_social_z", "sharing_type", "SID"), type = "random") %>%
data.frame() %>%
mutate(variable = "social relevance")) %>%
mutate(group = ifelse(group == "0", "broadcast sharing", "narrowcast sharing"))
predicted_h3 %>%
ggplot(aes(x, predicted, color = group)) +
stat_smooth(data = predicted_sub_h3, aes(group = interaction(group, facet)),
geom ='line', method = "lm", alpha = .1, size = .75, se = FALSE) +
geom_ribbon(aes(ymin = conf.low, ymax = conf.high, fill = group), alpha = .5, color = NA) +
geom_line(size = 1.5) +
facet_grid(~variable) +
scale_color_manual(name = "", values = palette_sharing) +
scale_fill_manual(name = "", values = palette_sharing) +
scale_linetype_manual(name = "", values = c("solid", "dashed")) +
labs(x = "\nrelevance rating", y = "predicted sharing intention rating\n") +
plot_aes## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
table_h3_broad = table_model(mod_h3, reversed = TRUE)
table_h3_broad %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 24.28 [21.23, 27.33] | 135.23 | 15.75 | < .001 |
| self-relevance | 5.34 [3.30, 7.37] | 147.11 | 5.18 | < .001 |
| sharing type (narrowcast) | 10.47 [9.06, 11.89] | 2564.91 | 14.51 | < .001 |
| social relevance | 7.54 [5.30, 9.78] | 170.91 | 6.64 | < .001 |
| self-relevance x sharing type (narrowcast) | -3.97 [-6.09, -1.85] | 2564.91 | -3.67 | < .001 |
| sharing type (narrowcast) x social relevance | 11.41 [9.24, 13.57] | 2564.91 | 10.34 | < .001 |
summary(mod_h3)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: msg_share ~ msg_rel_self_z * sharing_type + msg_rel_social_z *
## sharing_type + (1 + msg_rel_self_z + msg_rel_social_z | SID)
## Data: data_broadcasting
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 25391.8
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.5300 -0.5139 -0.0683 0.4373 3.7656
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## SID (Intercept) 255.23 15.976
## msg_rel_self_z 34.23 5.851 0.41
## msg_rel_social_z 53.67 7.326 0.72 -0.30
## Residual 354.74 18.834
## Number of obs: 2866, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 24.2786 1.5414 135.2288 15.751
## msg_rel_self_z 5.3358 1.0310 147.1096 5.175
## sharing_type 10.4721 0.7215 2564.9077 14.513
## msg_rel_social_z 7.5382 1.1347 170.9110 6.643
## msg_rel_self_z:sharing_type -3.9694 1.0803 2564.9077 -3.674
## sharing_type:msg_rel_social_z 11.4056 1.1030 2564.9077 10.341
## Pr(>|t|)
## (Intercept) < 0.0000000000000002 ***
## msg_rel_self_z 0.000000734299 ***
## sharing_type < 0.0000000000000002 ***
## msg_rel_social_z 0.000000000394 ***
## msg_rel_self_z:sharing_type 0.000243 ***
## sharing_type:msg_rel_social_z < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) msg_rl_sl_ shrng_ msg_rl_sc_ m___:_
## msg_rl_slf_ 0.186
## sharing_typ -0.234 0.014
## msg_rl_scl_ 0.385 -0.606 0.059
## msg_rl_s_:_ 0.006 -0.524 -0.026 0.372
## shrng_t:___ 0.028 0.402 -0.121 -0.486 -0.766
Here we include both narrowcast and broadcast sharing, and assess potential interactions.
We replicate our previous work in the comment group: the self and social conditions increase sharing intentions compared to the control, and these effects are stronger for narrowcast compared to broadcasting sharing intentions
mod_h5 = lmer(msg_share ~ 1 + article_cond*sharing_type + (1 + article_cond + sharing_type | SID),
data = data_broadcasting,
control = lmerControl(optimizer = "bobyqa"))predicmod_h5 = ggeffects::ggpredict(mod_h5, c("article_cond", "sharing_type")) %>%
data.frame() %>%
mutate(x = factor(x, levels = c("self", "control", "other")),
group = ifelse(group == "0", "broadcast sharing", "narrowcast sharing"))
predicted_mod_h5 = ggeffects::ggpredict(mod_h5, terms = c("article_cond", "sharing_type", "SID"), type = "random") %>%
data.frame() %>%
mutate(x = factor(x, levels = c("self", "control", "other")),
group = ifelse(group == "0", "broadcast sharing", "narrowcast sharing"))
predicmod_h5 %>%
ggplot(aes(x = x, y = predicted)) +
stat_summary(data = predicted_mod_h5, aes(group = facet), fun = "mean", geom = "line",
size = .08, color = "grey50") +
stat_summary(aes(group = group), fun = "mean", geom = "line", size = 1) +
geom_pointrange(aes(color = x, ymin = conf.low, ymax = conf.high), size = .5) +
facet_grid(~group) +
scale_color_manual(name = "", values = palette_condition, guide = "none") +
scale_alpha_manual(name = "", values = c(1, .5)) +
labs(x = "", y = "predicted rating\n") +
plot_aestable_h5_broad = table_model(mod_h5, reversed = TRUE)
table_h5_broad %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 24.68 [19.51, 29.85] | 133.24 | 9.45 | < .001 |
| other | 6.59 [3.35, 9.84] | 242.61 | 4.00 | < .001 |
| self | 5.57 [2.27, 8.87] | 237.28 | 3.32 | .001 |
| sharing type (narrowcast) | 8.19 [4.33, 12.06] | 235.91 | 4.18 | < .001 |
| other x sharing type (narrowcast) | 8.02 [4.54, 11.50] | 2379.96 | 4.52 | < .001 |
| self x sharing type (narrowcast) | 3.88 [0.41, 7.35] | 2378.91 | 2.19 | .029 |
summary(mod_h5)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: msg_share ~ 1 + article_cond * sharing_type + (1 + article_cond +
## sharing_type | SID)
## Data: data_broadcasting
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 25969.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.5635 -0.4688 -0.0001 0.3821 3.6648
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## SID (Intercept) 745.0 27.30
## article_condother 138.9 11.79 -0.09
## article_condself 151.4 12.31 -0.10 0.43
## sharing_type 277.6 16.66 -0.40 0.08 0.02
## Residual 372.0 19.29
## Number of obs: 2866, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 24.681 2.613 133.235 9.446
## article_condother 6.593 1.647 242.608 4.002
## article_condself 5.568 1.676 237.283 3.322
## sharing_type 8.193 1.961 235.909 4.179
## article_condother:sharing_type 8.019 1.775 2379.957 4.517
## article_condself:sharing_type 3.878 1.771 2378.909 2.190
## Pr(>|t|)
## (Intercept) < 0.0000000000000002 ***
## article_condother 0.00008358 ***
## article_condself 0.00103 **
## sharing_type 0.00004127 ***
## article_condother:sharing_type 0.00000657 ***
## article_condself:sharing_type 0.02863 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) artcl_cndt artcl_cnds shrng_ artcl_cndt:_
## artcl_cndth -0.241
## artcl_cndsl -0.246 0.476
## sharing_typ -0.443 0.286 0.256
## artcl_cndt:_ 0.173 -0.539 -0.269 -0.460
## artcl_cnds:_ 0.173 -0.274 -0.529 -0.460 0.508
table_h3_broad %>% mutate(DV = "H3a-b: Sharing intention") %>%
bind_rows(table_h5_broad %>% mutate(DV = "H5: Sharing intention")) %>%
select(DV, everything()) %>%
kable() %>%
kable_styling()| DV | term | b [95% CI] | df | t | p |
|---|---|---|---|---|---|
| H3a-b: Sharing intention | intercept | 24.28 [21.23, 27.33] | 135.23 | 15.75 | < .001 |
| H3a-b: Sharing intention | self-relevance | 5.34 [3.30, 7.37] | 147.11 | 5.18 | < .001 |
| H3a-b: Sharing intention | sharing type (narrowcast) | 10.47 [9.06, 11.89] | 2564.91 | 14.51 | < .001 |
| H3a-b: Sharing intention | social relevance | 7.54 [5.30, 9.78] | 170.91 | 6.64 | < .001 |
| H3a-b: Sharing intention | self-relevance x sharing type (narrowcast) | -3.97 [-6.09, -1.85] | 2564.91 | -3.67 | < .001 |
| H3a-b: Sharing intention | sharing type (narrowcast) x social relevance | 11.41 [9.24, 13.57] | 2564.91 | 10.34 | < .001 |
| H5: Sharing intention | intercept | 24.68 [19.51, 29.85] | 133.24 | 9.45 | < .001 |
| H5: Sharing intention | other | 6.59 [3.35, 9.84] | 242.61 | 4.00 | < .001 |
| H5: Sharing intention | self | 5.57 [2.27, 8.87] | 237.28 | 3.32 | .001 |
| H5: Sharing intention | sharing type (narrowcast) | 8.19 [4.33, 12.06] | 235.91 | 4.18 | < .001 |
| H5: Sharing intention | other x sharing type (narrowcast) | 8.02 [4.54, 11.50] | 2379.96 | 4.52 | < .001 |
| H5: Sharing intention | self x sharing type (narrowcast) | 3.88 [0.41, 7.35] | 2378.91 | 2.19 | .029 |
These analyses explore whether the analyses reported in behavioral study 2 of the main manuscript are moderated by article topic (health or climate). We focus on the comment group only because this is the only group for which the intervention was effective.
Are the effects of the experimental manipulations on relevance moderated by article topic?
There is a main effect of topic such that health articles are rated as more self-relevant than climate articles.
The was also an interaction such that the effect of the self-focused condition on self-relevance was weaker for health articles.
mod_h2am = lmer(msg_rel_self ~ article_cond * topic + (1 | SID),
data = filter(data, sharing_type == 0),
control = lmerControl(optimizer = "bobyqa"))table_h2am = table_model(mod_h2am)
table_h2am %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 50.64 [45.56, 55.73] | 302.50 | 19.60 | < .001 |
| other | 6.77 [1.86, 11.68] | 1322.45 | 2.70 | .007 |
| self | 13.80 [8.96, 18.64] | 1321.63 | 5.60 | < .001 |
| topic (health) | -1.48 [-6.45, 3.49] | 1325.78 | -0.58 | .559 |
| other x topic (health) | -5.15 [-12.24, 1.94] | 1336.54 | -1.42 | .155 |
| self x topic (health) | 1.27 [-5.79, 8.32] | 1334.55 | 0.35 | .725 |
summary(mod_h2am)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: msg_rel_self ~ article_cond * topic + (1 | SID)
## Data: filter(data, sharing_type == 0)
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 13705.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.0865 -0.6255 0.1014 0.6929 2.6586
##
## Random effects:
## Groups Name Variance Std.Dev.
## SID (Intercept) 456.2 21.36
## Residual 706.4 26.58
## Number of obs: 1433, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 50.643 2.584 302.502 19.596
## article_condother 6.769 2.505 1322.445 2.702
## article_condself 13.801 2.465 1321.628 5.598
## topichealth -1.480 2.531 1325.784 -0.585
## article_condother:topichealth -5.146 3.614 1336.537 -1.424
## article_condself:topichealth 1.266 3.598 1334.547 0.352
## Pr(>|t|)
## (Intercept) < 0.0000000000000002 ***
## article_condother 0.00697 **
## article_condself 0.0000000264 ***
## topichealth 0.55886
## article_condother:topichealth 0.15462
## article_condself:topichealth 0.72505
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) artcl_cndt artcl_cnds tpchlt artcl_cndt:
## artcl_cndth -0.469
## artcl_cndsl -0.477 0.491
## topichealth -0.470 0.499 0.506
## artcl_cndt: 0.338 -0.722 -0.354 -0.721
## artcl_cnds: 0.340 -0.349 -0.714 -0.721 0.505
predicted_h2m = ggeffects::ggpredict(mod_h2am, c("article_cond", "topic")) %>%
data.frame() %>%
mutate(model = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h2bm, c("article_cond", "topic")) %>%
data.frame() %>%
mutate(model = "social relevance")) %>%
mutate(x = factor(x, levels = c("self", "control", "other")))
predicted_sub_h2m = ggeffects::ggpredict(mod_h2am, terms = c("article_cond", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(model = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h2bm, c("article_cond", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(model = "social relevance")) %>%
mutate(x = factor(x, levels = c("self", "control", "other")))
predicted_h2m %>%
ggplot(aes(x = x, y = predicted, color = group)) +
stat_summary(data = predicted_sub_h2m, aes(group = interaction(group, facet)),
fun = "mean", geom = "line", size = .1, alpha = .5) +
stat_summary(aes(group = group), fun = "mean", geom = "line", size = 1) +
geom_pointrange(aes(ymin = conf.low, ymax = conf.high, group = group),
size = .75) +
facet_grid(~model) +
scale_color_manual(name = "", values = palette_topic) +
labs(x = "", y = "predicted rating\n") +
plot_aesAre the relationships between self and social relevance and sharing intentions moderated by article topic?
The relationship between self-relevance and sharing intentions was not moderated by topic.
However, the relationship between social relevance and sharing intentions was slightly stronger for health articles compared to climate articles.
mod_h3m = lmer(msg_share ~ msg_rel_self_z * topic + msg_rel_social_z * topic + (1 + msg_rel_self_z + msg_rel_social_z | SID),
data = filter(data, sharing_type == 0),
control = lmerControl(optimizer = "bobyqa"))predicted_h3m = ggeffects::ggpredict(mod_h3m, c("msg_rel_self_z", "topic")) %>%
data.frame() %>%
mutate(variable = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h3m, c("msg_rel_social_z", "topic")) %>%
data.frame() %>%
mutate(variable = "social relevance"))
predicted_sub_h3 = ggeffects::ggpredict(mod_h3m, terms = c("msg_rel_self_z", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(variable = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h3m, c("msg_rel_social_z", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(variable = "social relevance"))
predicted_h3m %>%
ggplot(aes(x, predicted)) +
stat_smooth(data = predicted_sub_h3, aes(group = interaction(group, facet), color = group),
geom ='line', method = "lm", alpha = .05, size = .75, se = FALSE) +
geom_ribbon(aes(ymin = conf.low, ymax = conf.high, fill = group), alpha = .5, color = NA) +
geom_line(aes(color = group), size = 1.5) +
facet_grid(~variable) +
scale_color_manual(name = "", values = palette_topic) +
scale_fill_manual(name = "", values = palette_topic) +
labs(x = "\nrelevance rating", y = "predicted sharing intention rating\n") +
plot_aestable_h3m = table_model(mod_h3m)
table_h3m %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 33.48 [30.40, 36.57] | 154.69 | 21.44 | < .001 |
| self-relevance | 1.72 [-1.66, 5.10] | 196.89 | 1.00 | .317 |
| topic (health) | 2.88 [0.87, 4.89] | 1287.43 | 2.81 | .005 |
| social relevance | 18.00 [14.51, 21.49] | 237.09 | 10.16 | < .001 |
| self-relevance x topic (health) | 0.79 [-2.79, 4.37] | 982.72 | 0.43 | .666 |
| topic (health) x social relevance | 1.87 [-1.69, 5.42] | 1028.89 | 1.03 | .302 |
summary(mod_h3)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: msg_share ~ msg_rel_self_z * sharing_type + msg_rel_social_z *
## sharing_type + (1 + msg_rel_self_z + msg_rel_social_z | SID)
## Data: data_broadcasting
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 25391.8
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.5300 -0.5139 -0.0683 0.4373 3.7656
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## SID (Intercept) 255.23 15.976
## msg_rel_self_z 34.23 5.851 0.41
## msg_rel_social_z 53.67 7.326 0.72 -0.30
## Residual 354.74 18.834
## Number of obs: 2866, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 24.2786 1.5414 135.2288 15.751
## msg_rel_self_z 5.3358 1.0310 147.1096 5.175
## sharing_type 10.4721 0.7215 2564.9077 14.513
## msg_rel_social_z 7.5382 1.1347 170.9110 6.643
## msg_rel_self_z:sharing_type -3.9694 1.0803 2564.9077 -3.674
## sharing_type:msg_rel_social_z 11.4056 1.1030 2564.9077 10.341
## Pr(>|t|)
## (Intercept) < 0.0000000000000002 ***
## msg_rel_self_z 0.000000734299 ***
## sharing_type < 0.0000000000000002 ***
## msg_rel_social_z 0.000000000394 ***
## msg_rel_self_z:sharing_type 0.000243 ***
## sharing_type:msg_rel_social_z < 0.0000000000000002 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) msg_rl_sl_ shrng_ msg_rl_sc_ m___:_
## msg_rl_slf_ 0.186
## sharing_typ -0.234 0.014
## msg_rl_scl_ 0.385 -0.606 0.059
## msg_rl_s_:_ 0.006 -0.524 -0.026 0.372
## shrng_t:___ 0.028 0.402 -0.121 -0.486 -0.766
Are the relationships between self and social relevance and sharing intentions moderated by article topic? Do they differ by sharing type?
mod_h3mb = lmer(msg_share ~ msg_rel_self_z*topic*sharing_type + msg_rel_social_z*topic*sharing_type +
(1 + msg_rel_self_z + msg_rel_social_z | SID),
data = data,
control = lmerControl(optimizer = "bobyqa"))predicted_h3mb = ggeffects::ggpredict(mod_h3mb, c("msg_rel_self_z", "sharing_type", "topic")) %>%
data.frame() %>%
mutate(variable = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h3mb, c("msg_rel_social_z", "sharing_type", "topic")) %>%
data.frame() %>%
mutate(variable = "social relevance")) %>%
mutate(group = ifelse(group == "1", "broadcast sharing", "narrowcast sharing"))
predicted_sub_h3mb = ggeffects::ggpredict(mod_h3mb, terms = c("msg_rel_self_z", "sharing_type", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(variable = "self-relevance") %>%
bind_rows(ggeffects::ggpredict(mod_h3mb, c("msg_rel_social_z", "sharing_type", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(variable = "social relevance")) %>%
mutate(group = ifelse(group == "1", "broadcast sharing", "narrowcast sharing"))
predicted_h3mb %>%
ggplot(aes(x, predicted)) +
stat_smooth(data = predicted_sub_h3mb, aes(group = interaction(facet, panel), color = facet),
geom ='line', method = "lm", alpha = .08, size = .75, se = FALSE) +
geom_ribbon(aes(ymin = conf.low, ymax = conf.high, fill = facet), alpha = .3, color = NA) +
geom_line(aes(color = facet), size = 1.5) +
facet_grid(group~variable) +
scale_color_manual(name = "", values = palette_topic) +
scale_fill_manual(name = "", values = palette_topic) +
scale_linetype_manual(name = "", values = c("solid", "dashed")) +
labs(x = "\nrelevance rating", y = "predicted sharing intention rating\n") +
plot_aestable_model(mod_h3mb) %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 33.18 [29.97, 36.40] | 167.38 | 20.38 | < .001 |
| self-relevance | 0.77 [-2.28, 3.82] | 477.44 | 0.50 | .619 |
| topic (health) | 3.11 [1.07, 5.16] | 2611.55 | 2.99 | .003 |
| sharing type (broadcast) | -8.07 [-10.07, -6.08] | 2557.39 | -7.94 | < .001 |
| social relevance | 17.93 [14.80, 21.06] | 504.66 | 11.25 | < .001 |
| self-relevance x topic (health) | 1.79 [-1.64, 5.21] | 2140.96 | 1.02 | .306 |
| self-relevance x sharing type (broadcast) | 6.51 [2.91, 10.11] | 2557.39 | 3.55 | < .001 |
| topic (health) x sharing type (broadcast) | -4.97 [-7.81, -2.13] | 2557.39 | -3.43 | < .001 |
| topic (health) x social relevance | 1.47 [-1.96, 4.91] | 2265.80 | 0.84 | .400 |
| sharing type (broadcast) x social relevance | -11.10 [-14.67, -7.54] | 2557.39 | -6.11 | < .001 |
| self-relevance x topic (health) x sharing type (broadcast) | -5.25 [-9.71, -0.79] | 2557.39 | -2.31 | .021 |
| topic (health) x sharing type (broadcast) x social relevance | -0.51 [-5.03, 4.01] | 2557.39 | -0.22 | .825 |
summary(mod_h3mb)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## msg_share ~ msg_rel_self_z * topic * sharing_type + msg_rel_social_z *
## topic * sharing_type + (1 + msg_rel_self_z + msg_rel_social_z | SID)
## Data: data
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 25341.1
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.5146 -0.5146 -0.0599 0.4352 3.7830
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## SID (Intercept) 255.65 15.989
## msg_rel_self_z 35.25 5.937 0.41
## msg_rel_social_z 54.08 7.354 0.71 -0.31
## Residual 350.31 18.717
## Number of obs: 2866, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df
## (Intercept) 33.1823 1.6281 167.3838
## msg_rel_self_z 0.7704 1.5505 477.4418
## topichealth 3.1147 1.0420 2611.5454
## sharing_type -8.0743 1.0174 2557.3937
## msg_rel_social_z 17.9330 1.5936 504.6550
## msg_rel_self_z:topichealth 1.7860 1.7450 2140.9572
## msg_rel_self_z:sharing_type 6.5125 1.8357 2557.3937
## topichealth:sharing_type -4.9662 1.4483 2557.3937
## topichealth:msg_rel_social_z 1.4724 1.7505 2265.7971
## sharing_type:msg_rel_social_z -11.1042 1.8173 2557.3937
## msg_rel_self_z:topichealth:sharing_type -5.2508 2.2762 2557.3937
## topichealth:sharing_type:msg_rel_social_z -0.5087 2.3057 2557.3937
## t value Pr(>|t|)
## (Intercept) 20.381 < 0.0000000000000002 ***
## msg_rel_self_z 0.497 0.619498
## topichealth 2.989 0.002824 **
## sharing_type -7.936 0.00000000000000309 ***
## msg_rel_social_z 11.253 < 0.0000000000000002 ***
## msg_rel_self_z:topichealth 1.024 0.306184
## msg_rel_self_z:sharing_type 3.548 0.000396 ***
## topichealth:sharing_type -3.429 0.000615 ***
## topichealth:msg_rel_social_z 0.841 0.400384
## sharing_type:msg_rel_social_z -6.110 0.00000000114728669 ***
## msg_rel_self_z:topichealth:sharing_type -2.307 0.021143 *
## topichealth:sharing_type:msg_rel_social_z -0.221 0.825412
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) msg_rl_sl_ tpchlt shrng_ msg_rl_sc_ ms___: m___:_ tpch:_
## msg_rl_slf_ 0.049
## topichealth -0.317 0.115
## sharing_typ -0.312 0.099 0.488
## msg_rl_scl_ 0.308 -0.758 -0.051 -0.030
## msg_rl_sl_: 0.067 -0.742 -0.069 -0.088 0.610
## msg_rl_s_:_ 0.052 -0.592 -0.082 -0.168 0.480 0.526
## tpchlth:sh_ 0.220 -0.070 -0.695 -0.703 0.021 0.042 0.118
## tpchlth:___ -0.028 0.622 -0.065 0.027 -0.693 -0.810 -0.437 0.051
## shrng_t:___ -0.017 0.498 0.026 0.053 -0.570 -0.442 -0.841 -0.037
## msg_rl__::_ -0.042 0.477 0.045 0.135 -0.387 -0.652 -0.806 -0.065
## tpchl:_:___ 0.013 -0.392 0.054 -0.042 0.449 0.515 0.663 -0.078
## tp:___ s_:___ m___::
## msg_rl_slf_
## topichealth
## sharing_typ
## msg_rl_scl_
## msg_rl_sl_:
## msg_rl_s_:_
## tpchlth:sh_
## tpchlth:___
## shrng_t:___ 0.519
## msg_rl__::_ 0.520 0.678
## tpchl:_:___ -0.659 -0.788 -0.790
Are the effects of the experimental manipulations on sharing intentions moderated by article topic?
There is a main effect of topic, such that health articles have higher sharing intentions than climate articles.
These data are not consistent with moderation by topic.
mod_h5m = lmer(msg_share ~ article_cond * topic + (1 + topic + article_cond | SID),
data = data,
control = lmerControl(optimizer = "bobyqa"))predicted_h5m = ggeffects::ggpredict(mod_h5m, c("article_cond", "topic")) %>%
data.frame() %>%
mutate(x = factor(x, levels = c("self", "control", "other")))
predicted_sub_h5m = ggeffects::ggpredict(mod_h5m, terms = c("article_cond", "topic", "SID"), type = "random") %>%
data.frame() %>%
mutate(x = factor(x, levels = c("self", "control", "other")))
predicted_h5m %>%
ggplot(aes(x = x, y = predicted, color = group)) +
stat_summary(data = predicted_sub_h5m, aes(group = interaction(group, facet)), fun = "mean", geom = "line", size = .1, alpha = .5) +
stat_summary(aes(group = group), fun = "mean", geom = "line", size = 1) +
geom_pointrange(aes(ymin = conf.low, ymax = conf.high, group = group),
size = .75) +
scale_color_manual(name = "", values = palette_topic) +
labs(x = "", y = "predicted sharing intention\n") +
plot_aestable_h5m = table_model(mod_h5m)
table_h5m %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 28.41 [23.47, 33.36] | 137.35 | 11.37 | < .001 |
| other | 9.24 [5.80, 12.67] | 297.92 | 5.30 | < .001 |
| self | 7.79 [4.31, 11.27] | 285.63 | 4.40 | < .001 |
| topic (health) | 0.79 [-2.66, 4.24] | 476.79 | 0.45 | .652 |
| other x topic (health) | 2.76 [-1.48, 7.01] | 2638.42 | 1.28 | .202 |
| self x topic (health) | -0.88 [-5.11, 3.34] | 2635.59 | -0.41 | .682 |
summary(mod_h5m)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: msg_share ~ article_cond * topic + (1 + topic + article_cond |
## SID)
## Data: data
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 26441.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8604 -0.5070 -0.0793 0.3668 3.5289
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## SID (Intercept) 643.14 25.360
## topichealth 94.76 9.734 -0.23
## article_condother 100.05 10.002 0.04 -0.09
## article_condself 118.84 10.901 0.04 -0.36 0.44
## Residual 474.36 21.780
## Number of obs: 2866, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 28.4130 2.4999 137.3546 11.366
## article_condother 9.2357 1.7437 297.9161 5.297
## article_condself 7.7909 1.7698 285.6342 4.402
## topichealth 0.7935 1.7561 476.7852 0.452
## article_condother:topichealth 2.7627 2.1649 2638.4217 1.276
## article_condself:topichealth -0.8832 2.1541 2635.5949 -0.410
## Pr(>|t|)
## (Intercept) < 0.0000000000000002 ***
## article_condother 0.00000023 ***
## article_condself 0.00001516 ***
## topichealth 0.652
## article_condother:topichealth 0.202
## article_condself:topichealth 0.682
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) artcl_cndt artcl_cnds tpchlt artcl_cndt:
## artcl_cndth -0.230
## artcl_cndsl -0.226 0.473
## topichealth -0.355 0.340 0.257
## artcl_cndt: 0.206 -0.616 -0.290 -0.621
## artcl_cnds: 0.208 -0.295 -0.594 -0.621 0.504
Here we also include broadcast sharing and examine whether the effects of the intervention differ by sharing type and topic
mod_h5mb = lmer(msg_share ~ 1 + article_cond*sharing_type*topic + (1 + article_cond + sharing_type + topic | SID),
data = data,
control = lmerControl(optimizer = "bobyqa"))predicted_h5mb = ggeffects::ggpredict(mod_h5mb, c("article_cond", "topic", "sharing_type")) %>%
data.frame() %>%
mutate(x = factor(x, levels = c("self", "control", "other")),
facet = ifelse(facet == "1", "broadcast sharing", "narrowcast sharing"))
predicted_sub_h5mb = ggeffects::ggpredict(mod_h5mb, terms = c("article_cond", "topic", "sharing_type", "SID"), type = "random") %>%
data.frame() %>%
mutate(x = factor(x, levels = c("self", "control", "other")),
facet = ifelse(facet == "1", "broadcast sharing", "narrowcast sharing"))
predicted_h5mb %>%
ggplot(aes(x = x, y = predicted, color = group)) +
stat_summary(data = predicted_sub_h5mb, aes(group = interaction(group, panel)), fun = "mean", geom = "line", size = .1, alpha = .5) +
stat_summary(aes(group = group), fun = "mean", geom = "line", size = 1) +
geom_pointrange(aes(ymin = conf.low, ymax = conf.high, group = group), size = .75) +
facet_grid(~facet) +
scale_color_manual(name = "", values = palette_topic) +
labs(x = "", y = "predicted sharing intention\n") +
plot_aestable_model(mod_h5mb) %>%
kable() %>%
kableExtra::kable_styling()| term | b [95% CI] | df | t | p |
|---|---|---|---|---|
| intercept | 30.79 [25.57, 36.01] | 158.35 | 11.65 | < .001 |
| other | 13.41 [9.38, 17.45] | 551.54 | 6.53 | < .001 |
| self | 9.22 [5.17, 13.28] | 514.34 | 4.47 | < .001 |
| sharing type (broadcast) | -4.75 [-9.21, -0.30] | 407.75 | -2.10 | .037 |
| topic (health) | 4.41 [0.40, 8.43] | 808.86 | 2.16 | .031 |
| other x sharing type (broadcast) | -8.31 [-13.11, -3.51] | 2297.58 | -3.40 | < .001 |
| self x sharing type (broadcast) | -3.04 [-7.76, 1.68] | 2295.90 | -1.26 | .207 |
| other x topic (health) | 2.19 [-2.81, 7.20] | 2421.56 | 0.86 | .390 |
| self x topic (health) | -0.03 [-5.02, 4.95] | 2423.40 | -0.01 | .989 |
| sharing type (broadcast) x topic (health) | -7.18 [-12.03, -2.33] | 2305.31 | -2.90 | .004 |
| other x sharing type (broadcast) x topic (health) | 1.14 [-5.77, 8.06] | 2326.91 | 0.32 | .746 |
| self x sharing type (broadcast) x topic (health) | -1.43 [-8.31, 5.46] | 2323.47 | -0.41 | .684 |
summary(mod_h5mb)## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## msg_share ~ 1 + article_cond * sharing_type * topic + (1 + article_cond +
## sharing_type + topic | SID)
## Data: data
## Control: lmerControl(optimizer = "bobyqa")
##
## REML criterion at convergence: 25823.4
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.8410 -0.4638 -0.0216 0.3591 3.6282
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## SID (Intercept) 681.4 26.10
## article_condother 135.7 11.65 -0.01
## article_condself 153.3 12.38 -0.01 0.46
## sharing_type 281.6 16.78 -0.19 -0.06 -0.03
## topichealth 117.8 10.85 -0.19 -0.08 -0.29 -0.16
## Residual 338.2 18.39
## Number of obs: 2866, groups: SID, 124
##
## Fixed effects:
## Estimate Std. Error df
## (Intercept) 30.78730 2.64311 158.34815
## article_condother 13.41194 2.05336 551.53886
## article_condself 9.22345 2.06419 514.33556
## sharing_type -4.75410 2.26614 407.75410
## topichealth 4.41274 2.04452 808.85912
## article_condother:sharing_type -8.30929 2.44672 2297.57720
## article_condself:sharing_type -3.03926 2.40847 2295.90315
## article_condother:topichealth 2.19474 2.55378 2421.55628
## article_condself:topichealth -0.03351 2.54240 2423.40222
## sharing_type:topichealth -7.17927 2.47182 2305.31347
## article_condother:sharing_type:topichealth 1.14390 3.52477 2326.91370
## article_condself:sharing_type:topichealth -1.42884 3.51061 2323.46790
## t value Pr(>|t|)
## (Intercept) 11.648 < 0.0000000000000002 ***
## article_condother 6.532 0.000000000148 ***
## article_condself 4.468 0.000009702419 ***
## sharing_type -2.098 0.036531 *
## topichealth 2.158 0.031196 *
## article_condother:sharing_type -3.396 0.000695 ***
## article_condself:sharing_type -1.262 0.207111
## article_condother:topichealth 0.859 0.390201
## article_condself:topichealth -0.013 0.989483
## sharing_type:topichealth -2.904 0.003714 **
## article_condother:sharing_type:topichealth 0.325 0.745564
## article_condself:sharing_type:topichealth -0.407 0.684040
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) artcl_cndt artcl_cnds shrng_ tpchlt artcl_cndt:_
## artcl_cndth -0.281
## artcl_cndsl -0.283 0.481
## sharing_typ -0.353 0.289 0.299
## topichealth -0.365 0.353 0.295 0.263
## artcl_cndt:_ 0.223 -0.594 -0.285 -0.523 -0.300
## artcl_cnds:_ 0.227 -0.291 -0.582 -0.531 -0.304 0.491
## artcl_cndt: 0.231 -0.619 -0.295 -0.259 -0.630 0.497
## artcl_cnds: 0.232 -0.297 -0.599 -0.261 -0.630 0.240
## shrng_typ:t 0.223 -0.295 -0.293 -0.523 -0.603 0.498
## artcl_cndt:_: -0.160 0.428 0.205 0.376 0.434 -0.721
## artcl_cnds:_: -0.161 0.207 0.414 0.378 0.434 -0.349
## artcl_cnds:_ artcl_cndt: artcl_cnds: shrn_: artcl_cndt:_:
## artcl_cndth
## artcl_cndsl
## sharing_typ
## topichealth
## artcl_cndt:_
## artcl_cnds:_
## artcl_cndt: 0.243
## artcl_cnds: 0.492 0.505
## shrng_typ:t 0.505 0.496 0.497
## artcl_cndt:_: -0.354 -0.689 -0.348 -0.720
## artcl_cnds:_: -0.713 -0.348 -0.690 -0.721 0.506
table_h2am %>% mutate(DV = "H2a: Self-relevance") %>%
bind_rows(table_h2bm %>% mutate(DV = "H2b: Social relevance")) %>%
bind_rows(table_h3m %>% mutate(DV = "H3a-b: Sharing intention")) %>%
bind_rows(table_h5m %>% mutate(DV = "H5: Sharing intention")) %>%
select(DV, everything()) %>%
kable() %>%
kable_styling()| DV | term | b [95% CI] | df | t | p |
|---|---|---|---|---|---|
| H2a: Self-relevance | intercept | 50.64 [45.56, 55.73] | 302.50 | 19.60 | < .001 |
| H2a: Self-relevance | other | 6.77 [1.86, 11.68] | 1322.45 | 2.70 | .007 |
| H2a: Self-relevance | self | 13.80 [8.96, 18.64] | 1321.63 | 5.60 | < .001 |
| H2a: Self-relevance | topic (health) | -1.48 [-6.45, 3.49] | 1325.78 | -0.58 | .559 |
| H2a: Self-relevance | other x topic (health) | -5.15 [-12.24, 1.94] | 1336.54 | -1.42 | .155 |
| H2a: Self-relevance | self x topic (health) | 1.27 [-5.79, 8.32] | 1334.55 | 0.35 | .725 |
| H2b: Social relevance | intercept | 50.43 [45.48, 55.38] | 249.46 | 20.07 | < .001 |
| H2b: Social relevance | other | 16.13 [11.82, 20.44] | 1317.72 | 7.34 | < .001 |
| H2b: Social relevance | self | 13.23 [8.99, 17.47] | 1317.08 | 6.11 | < .001 |
| H2b: Social relevance | topic (health) | 6.95 [2.59, 11.31] | 1320.15 | 3.13 | .002 |
| H2b: Social relevance | other x topic (health) | -3.79 [-10.01, 2.44] | 1328.38 | -1.19 | .233 |
| H2b: Social relevance | self x topic (health) | -7.01 [-13.21, -0.81] | 1326.76 | -2.22 | .027 |
| H3a-b: Sharing intention | intercept | 33.48 [30.40, 36.57] | 154.69 | 21.44 | < .001 |
| H3a-b: Sharing intention | self-relevance | 1.72 [-1.66, 5.10] | 196.89 | 1.00 | .317 |
| H3a-b: Sharing intention | topic (health) | 2.88 [0.87, 4.89] | 1287.43 | 2.81 | .005 |
| H3a-b: Sharing intention | social relevance | 18.00 [14.51, 21.49] | 237.09 | 10.16 | < .001 |
| H3a-b: Sharing intention | self-relevance x topic (health) | 0.79 [-2.79, 4.37] | 982.72 | 0.43 | .666 |
| H3a-b: Sharing intention | topic (health) x social relevance | 1.87 [-1.69, 5.42] | 1028.89 | 1.03 | .302 |
| H5: Sharing intention | intercept | 28.41 [23.47, 33.36] | 137.35 | 11.37 | < .001 |
| H5: Sharing intention | other | 9.24 [5.80, 12.67] | 297.92 | 5.30 | < .001 |
| H5: Sharing intention | self | 7.79 [4.31, 11.27] | 285.63 | 4.40 | < .001 |
| H5: Sharing intention | topic (health) | 0.79 [-2.66, 4.24] | 476.79 | 0.45 | .652 |
| H5: Sharing intention | other x topic (health) | 2.76 [-1.48, 7.01] | 2638.42 | 1.28 | .202 |
| H5: Sharing intention | self x topic (health) | -0.88 [-5.11, 3.34] | 2635.59 | -0.41 | .682 |
report::cite_packages()## - Angelo Canty and Brian Ripley (2021). boot: Bootstrap R (S-Plus) Functions. R package version 1.3-28.
## - Douglas Bates, Martin Maechler and Mikael Jagan (2023). Matrix: Sparse and Dense Matrix Classes and Methods. R package version 1.5-4. https://CRAN.R-project.org/package=Matrix
## - Douglas Bates, Martin Maechler, Ben Bolker, Steve Walker (2015). Fitting Linear Mixed-Effects Models Using lme4. Journal of Statistical Software, 67(1), 1-48. doi:10.18637/jss.v067.i01.
## - Evan Kleiman (2021). EMAtools: Data Management Tools for Real-Time Monitoring/Ecological Momentary Assessment Data. R package version 0.1.4. https://CRAN.R-project.org/package=EMAtools
## - H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.
## - Hadley Wickham (2021). forcats: Tools for Working with Categorical Variables (Factors). R package version 0.5.1. https://CRAN.R-project.org/package=forcats
## - Hadley Wickham (2022). stringr: Simple, Consistent Wrappers for Common String Operations. R package version 1.5.0. https://CRAN.R-project.org/package=stringr
## - Hadley Wickham and Maximilian Girlich (2022). tidyr: Tidy Messy Data. R package version 1.2.0. https://CRAN.R-project.org/package=tidyr
## - Hadley Wickham, Jennifer Bryan and Malcolm Barrett (2021). usethis: Automate Package and Project Setup. R package version 2.1.5. https://CRAN.R-project.org/package=usethis
## - Hadley Wickham, Jim Hester and Jennifer Bryan (2022). readr: Read Rectangular Text Data. R package version 2.1.2. https://CRAN.R-project.org/package=readr
## - Hadley Wickham, Jim Hester, Winston Chang and Jennifer Bryan (2021). devtools: Tools to Make Developing R Packages Easier. R package version 2.4.3. https://CRAN.R-project.org/package=devtools
## - Hadley Wickham, Romain François, Lionel Henry and Kirill Müller (2022). dplyr: A Grammar of Data Manipulation. R package version 1.0.9. https://CRAN.R-project.org/package=dplyr
## - Hao Zhu (2021). kableExtra: Construct Complex Table with 'kable' and Pipe Syntax. R package version 1.3.4. https://CRAN.R-project.org/package=kableExtra
## - Jim Hester, Hadley Wickham and Gábor Csárdi (2021). fs: Cross-Platform File System Operations Based on 'libuv'. R package version 1.5.2. https://CRAN.R-project.org/package=fs
## - Kirill Müller and Hadley Wickham (2022). tibble: Simple Data Frames. R package version 3.1.8. https://CRAN.R-project.org/package=tibble
## - Kuznetsova A, Brockhoff PB, Christensen RHB (2017). "lmerTest Package:Tests in Linear Mixed Effects Models." _Journal of StatisticalSoftware_, *82*(13), 1-26. doi: 10.18637/jss.v082.i13 (URL:https://doi.org/10.18637/jss.v082.i13).
## - Lionel Henry and Hadley Wickham (2020). purrr: Functional Programming Tools. R package version 0.3.4. https://CRAN.R-project.org/package=purrr
## - Lüdecke D (2018). "ggeffects: Tidy Data Frames of Marginal Effects fromRegression Models." _Journal of Open Source Software_, *3*(26), 772.doi: 10.21105/joss.00772 (URL: https://doi.org/10.21105/joss.00772).
## - R Core Team (2021). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.
## - Rinker, T. W. & Kurkiewicz, D. (2017). pacman: Package Management for R. version 0.5.0. Buffalo, New York. http://github.com/trinker/pacman
## - Wickham et al., (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686, https://doi.org/10.21105/joss.01686
## - Yihui Xie (2021). knitr: A General-Purpose Package for Dynamic Report Generation in R. R package version 1.37.
social relevance
There is a main effect of topic such that health articles are rated as more socially relevant than climate articles.
These data are not consistent with moderation by topic.
model table
summary